/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/16 9:30
 */

//小苯有一个长度为n的数组a。他想要使得所有ai的最大公因子是一个素数。
//即: gcd(a1,a2,...,an)是一个素数。他可以对数组进行任意次操作。
//具体的: 每次操作，他会选择i,j两个下标，同时执行: ai=ai+2,aj=aj-2,
//请问他是否有可能在任意次操作内将数组变成符合要求的，如果可以，请输出所有可能的最大公因数。
//注意，这里要保证aj在操作后仍然是正数，即不能选择aj<=2
//
//输入描述
//  输入包含两行。
//  第一行一个正整数n(2<= n <=2*10^5)表示数组长度。
//  第二行n个正整数a(1<= ai <=10^6)表这个数组。
//输出描述
//  输入包含一行或两行，如果可以输出“YES”，否则输出“NO”（不含双引号）
//  如果答案为“YES”，则第二行按照升序输出所有可行的数组gcd
//
//示例1
//输入
//4
//1 3 5 9
//输出
//YES
//3
//说明
//  可以选择一次i=1,j=3，这样一来数组变成3,3,3,9,gcd = 3。
//  可以证明只有3这一个答案
//
//示例2
//输入
//4
//2 2 2 2
//输出
//YES
//2
//
//示例3
//输入
//5
//2 4 5 6 8
//输出
//NO
//
//示例4
//输入
//8
//1324 4544 910 3087 14450 1010 2346 5836
//输出
//YES
//3 17 73